package com.ming.service.impl;

import com.ming.context.BaseContext;
import com.ming.dto.CategoryDTO;
import com.ming.entity.Category;
import com.ming.mapper.CategoryMapper;
import com.ming.service.CategoryService;
import com.ming.constant.StatusConstant;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class CategoryServiceImpl implements CategoryService {

    @Autowired
    private CategoryMapper categoryMapper;

    /**
     * 新增分类
     * @param categoryDTO
     */
    public void save(CategoryDTO categoryDTO) {
        Category category = new Category();
        BeanUtils.copyProperties(categoryDTO, category);

        // 分类状态默认为启用状态
        category.setStatus(StatusConstant.ENABLE);

        categoryMapper.insert(category);
    }

    /**
     * 根据ID查询分类
     * @param id
     * @return
     */
    public Category getById(Long id) {
        Category category = categoryMapper.getById(id);
        return category;
    }

    /**
     * 修改分类信息
     * @param categoryDTO
     */
    public void update(CategoryDTO categoryDTO) {
        Category category = new Category();
        BeanUtils.copyProperties(categoryDTO, category);

        categoryMapper.update(category);
    }

    /**
     * 根据ID删除分类
     * @param id
     */
    public void deleteById(Long id) {
        categoryMapper.deleteById(id);
    }

    /**
     * 根据类型查询分类列表
     * @param type 分类类型，1-菜品分类，2-套餐分类，null-查询所有
     * @param name 分类名称，支持模糊搜索，null-不限制
     * @param status 分类状态，0-禁用，1-启用，null-查询所有
     * @return
     */
    public List<Category> listByType(Integer type, String name, Integer status) {
        List<Category> categories = categoryMapper.listByType(type, name, status);
        return categories;
    }

}